iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 22
1
AI & Data

Puppeteer 簡單快速建立自己的 Nodejs 爬蟲系列 第 22

Day 22 Puppeteer處理lazy load, SSR, 反爬蟲防禦, 高效地爬大量數據

  • 分享至 

  • xImage
  •  

在這邊回答marlin12之前提出的5個問題,先回答4個


  1. lazy load

    lazy load就是指惰性載入,只要頁面不到那部份,那部份的頁面就不會載入。
    lazy load問題比較是會在非內建瀏覽器的爬蟲容易遇到的。
    像是基本的request等等,會無法應對。
    在Puppeteer這裡不會有這些問題
    再這裡提供2方法,可以讓滑鼠或網頁到指定位置,就會載入。

    當然透過鍵盤等等其他方法也是行的通,大家可以去嘗試看看


  1. SSR(server side render)

    這也是非內建瀏覽器會遇到的問題,會要等到使用者或伺服器端之後操作或延遲載入,HTML才會出來。
    這裡也可以使用上面兩個方法解決
    再加上

    以上在 Frame 裡面也是找的到這幾個方法


  1. 反爬蟲防禦

    名單

    • IP的黑白名單
    • useragent
    • 驗證碼
    • SSR、lazy load

    針對反爬蟲防禦,上面那兩個方法都不錯,都可以有效減少爬蟲速度。
    除此之外還有針對IP的黑白名單、useragent、
    那目前最有效的方法就是

    驗證碼

    當然驗證碼也是可以透過機器學習、圖像辨識解決。
    雖然不能完全防禦,但能增加難度。

    簡而言之,正常的網站是不可能百分之百防禦爬蟲的。


  1. 高效地爬大量數據

    針對這問題,我只能提供思路。
    因為要高效率,就容易被爬蟲防禦。
    要反爬蟲防禦,就沒辦法高效率。

    效率
    基本request > 內建瀏覽器puppeteer
    無防禦機制 > 有防禦機制

    防禦機制就照著上面的名單下去一一解決,針對每個網站找到最佳解。


上一篇
Day 21 Puppeteer API 介紹 - class: SecurityDetails, Target, CDPSession, TimeoutError
下一篇
Day 23 爬蟲範例-中央社(練習使用typescript)
系列文
Puppeteer 簡單快速建立自己的 Nodejs 爬蟲25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
marlin12
iT邦研究生 5 級 ‧ 2018-10-23 22:18:36

感謝大大的回答
/images/emoticon/emoticon41.gif

henry.w iT邦新手 5 級 ‧ 2018-10-23 23:38:52 檢舉

也謝謝你的指教
如果有問題歡迎繼續提出
如果有寫的不好的地方還請你見諒:)

我要留言

立即登入留言